Resource integrity during partial backout of application updates

ABSTRACT

In response to failure of an application that initiated updates to a group of operational system resources without the updates being successfully committed, for each physically inconsistent operational system resource that was left in a non-fully functional data indexing and access state as a result of the failure of the application, a portion of available pending updates are performed to change the respective physically inconsistent operational system resource to a partially backed out operational system resource with a fully functional data indexing and access state. Remaining available pending updates are ignored for the respective partially backed out operational system resource after the respective fully functional data indexing and access state is achieved to expedite system restart.

BACKGROUND

The present invention relates to systems and methods for partial backoutof application updates. More particularly, the present invention relatesto resource integrity during partial backout of application updates.

Applications that run for long periods of time may fail beforecompleting all desired processing. Applications use system software toupdate numerous recoverable resources and write associated recovery logrecords to document the updates that have been performed on theresources. The log records are stored within application log queues. Forapplications that have run for extended periods of time, many logrecords may have been generated and stored within the log queues at atime of failure of an application.

When an application failure or an application hosting system failureoccurs, the log records are available within the log queues toreconstruct application states at the time of failure. The hostingsystem has the responsibility of performing recovery operations (e.g.,rollback, backout) related to the failed application. Backout refers toa process of processing log records to identify application processingsequences and performing the represented operations to recover theresources.

However, the log records may be stored on different log media, includingdisks and tapes. Traversing this media is time consuming. Accordingly,for applications that have run for extended periods of time, processingthe log records to reconstruct the state of the recoverable resourcesmay take days or weeks to reconstruct the state of these resources.

SUMMARY

The subject matter described herein provides automated resourceintegrity during partial backout of application updates. In response toa failure of an application, system resources that have been left in aphysically inconsistent state by the application failure are identified.Available backout operations for physically consistent system resourcesare ignored to expedite system recovery and restart performance. Anautomated partial backout is performed on any physically inconsistentsystem resources to bring the physically inconsistent system resourcesto a physically consistent state. Available backout operations for theidentified physically inconsistent system resources after the physicallyconsistent state is achieved may be ignored to further expedite systemrecovery and restart performance. System resources that have beenpartially backed out may be marked during the partial backout processand verified upon system restart.

A method includes identifying, in response to failure of an application,at least one physically inconsistent system resource that was left in aphysically inconsistent state as a result of the failure of theapplication from a plurality of system resources updated by the failedapplication; ignoring available backout operations for any of theplurality of system resources updated by the failed application otherthan the at least one physically inconsistent system resource; andperforming an automated partial backout of the at least one physicallyinconsistent system resource.

A system includes a memory adapted to store resource recoveryinformation; and a processor programmed to: identify, in response tofailure of an application, at least one physically inconsistent systemresource that was left in a physically inconsistent state as a result ofthe failure of the application from a plurality of system resourcesupdated by the failed application based upon the stored resourcerecovery information; ignore available backout operations for any of theplurality of system resources updated by the failed application otherthan the at least one physically inconsistent system resource; andperform an automated partial backout of the at least one physicallyinconsistent system resource.

An alternative system includes a memory adapted to store recovery logrecords for a plurality of system resources; and a processor programmedto: retrieve, in response to failure of an application, the recovery logrecords from the memory; identify at least one physically inconsistentsystem resource that was left in a physically inconsistent state as aresult of the failure of the application from the plurality of systemresources updated by the failed application based upon the retrievedrecovery log records; ignore available backout operations for any of theplurality of system resources updated by the failed application otherthan the at least one physically inconsistent system resource; performan automated partial backout of the at least one physically inconsistentsystem resource by performing available updates to the at least onephysically inconsistent system resource referenced by the retrievedrecovery log records as previously initiated by the failed applicationto bring the at least one system physically inconsistent system resourceto a physically consistent state; ignore available updates referenced bythe retrieved recovery log records associated with the at least onephysically inconsistent system resource after the physically consistentstate is achieved; mark the at least one partially backed out systemresource for verification; verify physical integrity of the at least onepartially backed out system resource prior to restart of the at leastone partially backed out system resource; and restart at least one ofthe application and the plurality of system resources.

A computer program product includes a computer useable storage mediumincluding a computer readable program. The computer readable programwhen executed on a computer causes the computer to identify, in responseto failure of an application, at least one physically inconsistentsystem resource that was left in a physically inconsistent state as aresult of the failure of the application from a plurality of systemresources updated by the failed application based upon the storedresource recovery information; ignore available backout operations forany of the plurality of system resources updated by the failedapplication other than the at least one physically inconsistent systemresource; and perform an automated partial backout of the at least onephysically inconsistent system resource.

Those skilled in the art will appreciate the scope of the presentinvention and realize additional aspects thereof after reading thefollowing detailed description of the preferred embodiments inassociation with the accompanying drawing figures.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawing figures incorporated in and forming a part ofthis specification illustrate several aspects of the invention, andtogether with the description serve to explain the principles of theinvention.

FIG. 1 is a block diagram of an example of an implementation of a systemfor automated resource integrity during partial backout of applicationupdates according to an embodiment of the present subject matter;

FIG. 2 is a block diagram of an example of an implementation of arecovery device that is capable of performing automated resourceintegrity during partial backout of application updates based uponrecovery log information according to an embodiment of the presentsubject matter;

FIG. 3 is a flow chart of an example of an implementation of a processfor providing automated resource integrity during partial backout ofapplication updates according to an embodiment of the present subjectmatter; and

FIG. 4 is a flow chart of an example of an implementation of a processfor providing automated resource integrity during partial backout ofapplication updates, verifying system resources that are updated from aphysically inconsistent state to a physically consistent state, andignoring available updates that do not result in physical inconsistencyof system resources to expedite restart according to an embodiment ofthe present subject matter.

DETAILED DESCRIPTION

The examples set forth below represent the necessary information toenable those skilled in the art to practice the invention and illustratethe best mode of practicing the invention. Upon reading the followingdescription in light of the accompanying drawing figures, those skilledin the art will understand the concepts of the invention and willrecognize applications of these concepts not particularly addressedherein. It should be understood that these concepts and applicationsfall within the scope of the disclosure and the accompanying claims.

The subject matter described herein provides automated resourceintegrity during partial backout of application updates. In response toa failure of an application, system resources that have been left in aphysically inconsistent state by the application failure are identified.Available backout operations for physically consistent system resourcesare ignored to expedite system recovery and restart performance. Anautomated partial backout is performed on any physically inconsistentsystem resources to bring the physically inconsistent system resourcesto a physically consistent state. Available backout operations for theidentified physically inconsistent system resources after the physicallyconsistent state is achieved may be ignored to further expedite systemrecovery and restart performance. System resources that have beenpartially backed out may be marked during the partial backout processand verified upon system restart.

For purposes of the present subject matter the terms “physicalconsistency” and “physically consistent” refer to system resources thatare functional from a data or component indexing and accessingperspective. For example, if a system resource is physically consistent,memory index operators, memory index operations associated with thesystem resource, storage locations referenced by the system resource,configuration register values, and peripheral components associated withthe system resource may be properly resolved and functional. Incontrast, the terms “physical inconsistency” and “physicallyinconsistent” refer to system resources that are not fully functionalfrom a data or component indexing and accessing perspective. Forexample, if a system resource is physically inconsistent, at least onememory index operator, memory index operation associated with the systemresource, storage location referenced by the system resource,configuration register value, or peripheral component associated withthe system resource may not be properly resolved and functional.

The automated resource integrity during partial backout of applicationupdates described herein may be performed in real time to allow promptsystem restart after application failures. For purposes of the presentdescription, real time shall include any time frame of sufficientlyshort duration as to provide reasonable response time for informationprocessing acceptable to a user of the subject matter described.Additionally, the term “real time” shall include what is commonly termed“near real time”—generally meaning any time frame of sufficiently shortduration as to provide reasonable response time for on demandinformation processing acceptable to a user of the subject matterdescribed (e.g., within a few seconds or less than ten seconds or so incertain systems). These terms, while difficult to precisely define arewell understood by those skilled in the art.

FIG. 1 is a block diagram of an example of an implementation of a system100 for automated resource integrity during partial backout ofapplication updates. Within the system 100, a recovery device 102communicates via a network 104 with a processing device 106. Theprocessing device 106 is understood to include at least one processingapplication 108 that interacts with and updates a system resource_1 110,a system resource_2 112, up to a system resource_N 114. The processingdevice 106 writes recovery log records to a recovery log record storagearea 116 within a database 118 on behalf of the one or more processingapplications upon update of any of the system resource_1 110 through thesystem resource_N 114. It should be understood that the recovery logrecord storage area 116 may be formed as a queue, table, or otherstorage suitable arrangement for archival and retrieval of recovery logrecords.

As a preliminary matter, it should be understood that the example blockdiagram shown within the system 100 is but one example of components andmodules within which the present subject matter may implemented. Theexample block diagram of the system 100 is shown for ease ofillustration purposes and many other alternatives are possible. Forexample, there is no requirement for the network 104 within a givenimplementation of the present subject matter. As such, the respectivedevices may be included within a single device or may be directlyinterconnected or otherwise communicate without the network 104.Additionally, the recovery device 102 may be integrated into theprocessing device 106. As well, the processing device 106 may includemore than one application 108 that operate upon the system resource_1110 through the system resource_N 114. An additional network may beimplemented for communication between the processing device 106 and thesystem resource_1 110 through the system resource_N 114 or the network104 may provide communication capabilities for the respective devices.Furthermore, many processing devices, such as the processing device 106,may be present within a given implementation. In such an implementation,the multiple processing devices may be operated upon by a singlerecovery device, such as the recovery device 102, or the recovery device102 may be distributed in association with each of the multipleprocessing devices to distribute application recovery processing. Manyadditional variations are possible and all are considered within thescope of the present subject matter.

Regarding the database 118, many possibilities exist for storage of logrecords. A formal centralized or distributed database infrastructure maybe implemented. Additionally, disk storage, tape storage, or any otheravailable storage medium may be used to store the recovery log recordswithin the recovery log record storage area 116. Accordingly, anysuitable storage medium or technique is considered within the scope ofthe present subject matter.

As will be described in more detail below in association with FIGS. 2through 4, the recovery device 102 provides automated resource integrityduring partial backout of application updates based upon determinationsof physical consistency and physical inconsistency of the systemresource_1 110 through the system resource_N 114. The automated recoveryprocessing performed by the recovery device 102 may be performed inresponse to a failure of the application 108 within the processingdevice 106.

The recovery device 102 may be a single computing device or adistributed computing device, as described above. Additionally, therecovery device 102 may be a portable computing device without departurefrom the scope of the present subject matter. It should also be notedthat the recovery device 102 may be any computing device capable ofprocessing information as described above and in more detail below. Forexample, the recovery device 102 may include devices such as a personalcomputer (e.g., desktop, laptop, palm, server, etc.) or a handhelddevice (e.g., cellular telephone, personal digital assistant (PDA),email device, music recording or playback device, etc.), or any otherdevice capable of processing information as described in more detailbelow.

The network 104 may include any form of interconnection suitable for theintended purpose, including a private or public network such as anintranet or the Internet, respectively, direct inter-moduleinterconnection, dial-up, or any other interconnection mechanism capableof interconnecting the devices.

FIG. 2 is a block diagram of an example of an implementation of therecovery device 102 that is capable of performing automated resourceintegrity during partial backout of application updates based uponrecovery log information stored in response to application updates ofsystem resources, such as the system resource_1 110 through the systemresource_N 114. A central processing unit (CPU) 200 provides computerinstruction, execution, computation, and other capabilities within therecovery device 102. A display 202 provides visual information to a userof the recovery device 102 and an input device 204 provides inputcapabilities for the user.

The display 202 may include any display device, such as a cathode raytube (CRT), liquid crystal display (LCD), light emitting diode (LED),projection, touchscreen, or other display element or panel. The inputdevice 204 may include a computer keyboard, a keypad, a mouse, a pen, ajoystick, or any other type of input device by which the user mayinteract with and respond to information on the display 202.

It should be noted that the display 202 and the input device 204 areillustrated with a dashed-line representation within FIG. 2 to indicatethat they are optional components for the recovery device 102.Accordingly, the recovery device 102 may operate as a completelyautomated embedded device without user feedback or configurability.However, the recovery device 102 may also provide user feedback andconfigurability via the display 202 and the input device 204,respectively.

A communication module 206 provides interconnection capabilities thatallow the recovery device 102 to communicate with other modules withinthe system 100, such as the processing device 106. The communicationmodule 206 may include any electrical, protocol, and protocol conversioncapabilities useable to provide the interconnection capabilities. Thoughthe communication module 206 is illustrated as a component-level modulefor ease of illustration and description purposes, it should be notedthat the communication module 206 includes any hardware, programmedprocessor(s), and memory used to carry out the functions of thecommunication module 206 as described above and in more detail below.For example, the communication module 206 may include additionalcontroller circuitry in the form of application specific integratedcircuits (ASICs), processors, antennas, and/or discrete integratedcircuits and components for performing communication and electricalcontrol activities associated with the communication module 206.Additionally, the communication module 206 may also includeinterrupt-level, stack-level, and application-level modules asappropriate. Furthermore, the communication module 206 may include anymemory components used for storage, execution, and data processing forperforming processing activities associated with the communicationmodule 206. The communication module 206 may also form a portion ofother circuitry described without departure from the scope of thepresent subject matter.

A memory 208 includes a recovery control application 210 that operatesin conjunction with a recovery module 212 to perform the automatedresource integrity during partial backout of application updatesassociated with the present subject matter. It should be noted that therecovery control application 210 may also form a portion of the recoverymodule 212 or conversely without departure from the scope of the presentsubject matter.

The recovery control application 210 includes instructions executable bythe CPU 200 for performing these functions. The CPU 200 executes theseinstructions to provide the processing capabilities described above andin more detail below for the recovery device 102. The recovery controlapplication 210 may form a portion of an interrupt service routine(ISR), a portion of an operating system, a portion of a browserapplication, or a portion of a separate application without departurefrom the scope of the present subject matter. The recovery controlapplication 210 may also create, store, select, and process recovery logrecords in association with the recovery log record storage area 116.

The recovery module 212 provides processing capabilities for theautomated resource integrity during partial backout of applicationupdates. Though the recovery module 212 is illustrated as acomponent-level module for ease of illustration and descriptionpurposes, it should be noted that the recovery module 212 includes anyhardware, programmed processor(s), and memory used to carry out thefunctions of the recovery module 212 as described above and in moredetail below. For example, the recovery module 212 may includeadditional controller circuitry in the form of application specificintegrated circuits (ASICs), processors, antennas, and/or discreteintegrated circuits and components for performing communication andelectrical control activities associated with the recovery module 212.Additionally, the recovery module 212 may also include interrupt-level,stack-level, and application-level modules as appropriate. Furthermore,the recovery module 212 may include any memory components used forstorage, execution, and data processing for performing processingactivities associated with the recovery module 212. The recovery module212 may also form a portion of other circuitry described withoutdeparture from the scope of the present subject matter.

It is understood that the memory 208 may include any combination ofvolatile and non-volatile memory suitable for the intended purpose,distributed or localized as appropriate, and may include other memorysegments not illustrated within the present example for ease ofillustration purposes. For example, the memory 208 may include a codestorage area, a code execution area, and a data area without departurefrom the scope of the present subject matter.

The CPU 200, the display 202, the input device 204, the communicationmodule 206, the memory 208, the recovery module 212, and the database118 are interconnected via an interconnection 214. The interconnection214 may include a system bus, a network, or any other interconnectioncapable of providing the respective components with suitableinterconnection for the respective purpose.

While the recovery device 102 is illustrated with and has certaincomponents described, other modules and components may be associatedwith the recovery device 102 without departure from the scope of thepresent subject matter. Additionally, it should be noted that, while therecovery device 102 is described as a single device for ease ofillustration purposes, the components within the recovery device 102 maybe co-located or distributed and interconnected via a network withoutdeparture from the scope of the present subject matter. For adistributed arrangement, the display 202 and the input device 204 may belocated at a kiosk or other location, while the CPU 200 and memory 208may be located at a local or remote server. Many other possiblearrangements for components of the recovery device 102 are possible andall are considered within the scope of the present subject matter. Itshould also be understood that, though the recovery log record storagearea 116 is shown within the database 118, it may also be stored withinthe memory 208 without departure from the scope of the present subjectmatter. Accordingly, the recovery device 102 may take many forms and maybe associated with many platforms.

FIGS. 3 and 4 below describe example processes that may be executed byrecovery devices, such as the recovery device 102, to perform theautomated resource integrity during partial backout of applicationupdates associated with the present subject matter. Many othervariations on the example processes are possible and all are consideredwithin the scope of the present subject matter. The example processesmay be performed by modules, such as the recovery module 212 and/or bythe recovery application 210 and executed by the CPU 200. It should benoted that time out procedures and other error control procedures arenot illustrated within the example processes described below for ease ofillustration purposes. However, it is understood that all suchprocedures are considered to be within the scope of the present subjectmatter.

FIG. 3 is a flow chart of an example of an implementation of a process300 for providing automated resource integrity during partial backout ofapplication updates. At block 302, the process 300 identifies, inresponse to failure of an application, at least one physicallyinconsistent system resource that was left in a physically inconsistentstate as a result of the failure of the application from a plurality ofsystem resources updated by the failed application. At block 304, theprocess 300 ignores available backout operations for any of theplurality of system resources updated by the failed application otherthan the at least one physically inconsistent system resource. At block306, the process 300 performs an automated partial backout of the atleast one physically inconsistent system resource.

FIG. 4 is a flow chart of an example of an implementation of a process400 for providing automated resource integrity during partial backout ofapplication updates, verifying system resources that are updated from aphysically inconsistent state to a physically consistent state, andignoring available updates that do not result in physical inconsistencyof system resources to expedite restart. The process waits at decisionpoint 402 for an application failure, such as the application 108 thatoperates upon the system resource_1 110 through the system resource_N114.

In response to an application failure, at block 404, the process 400reads stored recovery log records for system resources from a storagelocation, such as the recovery log record storage area 116 within thedatabase 118. At block 406, the process 400 processes the recovery logrecords to identify previous state information for system resources,such as the system resource_1 110 through the system resource_N 114.

At block 408, the process 400 identifies a previous physicallyconsistent state for each of the system resources. The previousphysically consistent state may be determined from the processingperformed on the recovery log records and the associated applicationupdates to the system resources represented within the processedrecovery log records. The previous physically consistent state for agiven system resource may have resulted from the last committedapplication update for a given system resource, as reflected in therecovery log records. Alternatively, there may have been many committedupdates that occurred after the last physically consistent point. Assuch, at block 408, the process 400 identifies where in the recovery logrecords the previous point of physical consistency may be identified.

The previous physically consistent state may also be determined byexamination of the respective system resource for integrity of anyreferenced elements. For example, a system resource may be examined todetermine whether all data sources and memory indexes (e.g., pointers,structures, arrays, etc.) reference valid physical memory locations,whether all configuration registers contain valid configuration values,and that each peripheral component associated with a system resource(not shown) is in an appropriate state for restart of the respectivesystem resource and the failed application.

At decision point 410, the process 400 makes a determination as towhether there are any pending updates for any of the system resources.Pending updates are updates that are considered to be “in flight” at thetime of failure of the application. These pending updates may or may notaffect the physical consistency for a given system resource. For pendingupdates that will not affect the physical consistency of the systemresource, the respective system resource and the associated updates maybe ignored to expedite system restart, as described in more detailbelow.

For pending updates that do affect the physical consistency of thesystem resource, the given system resource may be considered to be in aphysically inconsistent state. In such a situation, the respectivesystem resource is automatically partially backed out by performingavailable updates to the system resource referenced by the storedrecovery log records to bring the physically inconsistent systemresource to a physically consistent state. Available updates referencedby the stored recovery log records associated with the physicallyinconsistent system resource after the physically consistent state isachieved may be ignored to further expedite system restart, as describedin more detail below.

When a determination is made at decision point 410 that there are nopending updates for any of the system resources, the process 400restarts the application and the system resources at block 412 andreturns to decision point 402 to await another application failure. Whena determination is made at decision point 410 that there are pendingupdates for any of the system resources, the process 400 makes adetermination at decision point 414 as to whether the pending updatesresult in a physically inconsistent state for any of the systemresources. When a determination is made at decision point 414 that noneof the pending updates affect physical consistency for any of the systemresources, the process 400 ignores the pending updates to expediterestart processing, restarts the application and the system resources atblock 412 and returns to decision point 402 to await another applicationfailure. When a determination is made at decision point 414 that failureof the application has resulted in at least one inconsistent systemresource, the process 400 selects the inconsistent resource at block 416for updating.

At block 418, the process 400 performs an available update for theinconsistent system resource. The available update may be the oldestavailable update referenced by stored recovery log records as previouslyperformed (e.g., in flight) by the failed application to initiatebringing the physically inconsistent system resource to a physicallyconsistent state.

It should be noted that there may be more than one available update tobring the physically inconsistent system resource to a physicallyconsistent state, as described in more detail below. As such, atdecision point 420, the process 400 makes a determination as to whetherthe system resource is physically consistent based upon the performedupdate operation. When a determination is made that the resource is notyet physically consistent, the process 400 returns to block 418 toperform the next available update. When a determination is made that theresource is physically consistent, whether after one or more updateoperations, the process 400 ignores any remaining available updates toexpedite system restart at block 422. At block 424, the process marksthe updated system resource for verification.

At decision point 426, the process 400 makes a determination as towhether operations on physically inconsistent system resources have beencompleted to update all of the system resources to a physicallyconsistent state. When a determination is made that the updating processis not completed, the process 400 returns to block 416 to select thenext physically inconsistent resource and continues processing asdescribed above.

When a determination is made at decision point 426 that the updatingprocess is completed, the process 400 verifies, at block 428, thephysical integrity any partially backed out system resources that havebeen marked for verification. The verification of the physical integrityof any partially backed out system resources may include, for example,verifying that each memory index operator associated with the anypartially backed out system resource references a valid storage locationwithin a memory, that each memory storage location referenced by anypartially backed out system resource is accessible, that eachconfiguration register value associated with any partially backed outsystem resource represents a valid configuration value, or that eachperipheral component associated with any partially backed out systemresource is in an appropriate state for startup of the respectivepartially backed out system resource. Many other possibilities exist forverification of system resources that have been partially backed out andall are considered within the scope of the present subject matter.

As described above, any updates to any system resources that weredetermined not to result in a physically inconsistent state for thegiven resource as a result of the application failure are ignored atblock 430 to further expedite system restart. The process 400 restartsthe application and the system resources at block 412 and returns todecision point 402 to await another application failure.

As described above in association with FIGS. 1 through 4, the examplesystems and processes provide automated resource integrity duringpartial backout of application updates, and verification of systemresources that are updated from a physically inconsistent state to aphysically consistent state, and ignore available updates that do notresult in physical inconsistency of the respective system resources toexpedite restart. Many other variations and additional activitiesassociated with automated resource integrity during partial backout arepossible and all are considered within the scope of the present subjectmatter.

Those skilled in the art will recognize, upon consideration of the aboveteachings, that certain of the above examples are based upon use of aprogrammed processor such as CPU 200. However, the invention is notlimited to such exemplary embodiments, since other embodiments could beimplemented using hardware component equivalents such as special purposehardware and/or dedicated processors. Similarly, general purposecomputers, microprocessor based computers, micro-controllers, opticalcomputers, analog computers, dedicated processors, application specificcircuits and/or dedicated hard wired logic may be used to constructalternative equivalent embodiments.

As will be appreciated by one skilled in the art, the present inventionmay be embodied as a system, method or computer program product.Accordingly, the present invention may take the form of an entirelyhardware embodiment, an entirely software embodiment (includingfirmware, resident software, micro-code, etc.) or an embodimentcombining software and hardware aspects that may all generally bereferred to herein as a “circuit,” “module” or “system.” Furthermore,the present invention may take the form of a computer program productembodied in any tangible medium of expression having computer-usableprogram code embodied in the medium.

Any combination of one or more computer usable or computer readablemedium(s) may be utilized. The computer-usable or computer-readablemedium may be, for example but not limited to, an electronic, magnetic,optical, electromagnetic, infrared, or semiconductor system, apparatus,device, or propagation medium. More specific examples (a non-exhaustivelist) of the computer-readable medium would include the following: anelectrical connection having one or more wires, a portable computerdiskette, a hard disk, a random access memory (RAM), a read-only memory(ROM), an erasable programmable read-only memory (EPROM or Flashmemory), an optical fiber, a portable compact disc read-only memory(CD-ROM), an optical storage device, a transmission media such as thosesupporting the Internet or an intranet, or a magnetic storage device.Note that the computer-usable or computer-readable medium could even bepaper or another suitable medium upon which the program is printed, asthe program can be electronically captured, via, for instance, opticalscanning of the paper or other medium, then compiled, interpreted, orotherwise processed in a suitable manner, if necessary, and then storedin a computer memory. In the context of this document, a computer-usableor computer-readable medium may be any medium that can contain, store,communicate, propagate, or transport the program for use by or inconnection with the instruction execution system, apparatus, or device.The computer-usable medium may include a propagated data signal with thecomputer-usable program code embodied therewith, either in baseband oras part of a carrier wave. The computer usable program code may betransmitted using any appropriate medium, including but not limited towireless, wireline, optical fiber cable, RF, etc.

Computer program code for carrying out operations of the presentinvention may be written in any combination of one or more programminglanguages, including an object oriented programming language such asJava, Smalltalk, C++ or the like and conventional procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The program code may execute entirely on the user's computer,partly on the user's computer, as a stand-alone software package, partlyon the user's computer and partly on a remote computer or entirely onthe remote computer or server. In the latter scenario, the remotecomputer may be connected to the user's computer through any type ofnetwork, including a local area network (LAN) or a wide area network(WAN), or the connection may be made to an external computer (forexample, through the Internet using an Internet Service Provider).

The present invention has been described with reference to flowchartillustrations and/or block diagrams of methods, apparatus (systems) andcomputer program products according to example embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in acomputer-readable medium that can direct a computer or otherprogrammable data processing apparatus to function in a particularmanner, such that the instructions stored in the computer-readablemedium produce an article of manufacture including instruction meanswhich implement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer orother programmable data processing apparatus to cause a series ofoperational steps to be performed on the computer or other programmableapparatus to produce a computer implemented process such that theinstructions which execute on the computer or other programmableapparatus provide processes for implementing the functions/actsspecified in the flowchart and/or block diagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible exampleimplementations of systems, methods and computer program productsaccording to various embodiments of the present invention. In thisregard, each block in the flowchart or block diagrams may represent amodule, segment, or portion of code, which comprises one or moreexecutable instructions for implementing the specified logicalfunction(s). It should also be noted that, in some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts, or combinations of special purpose hardware andcomputer instructions.

A data processing system suitable for storing and/or executing programcode will include at least one processor coupled directly or indirectlyto memory elements through a system bus. The memory elements can includelocal memory employed during actual execution of the program code, bulkstorage, and cache memories which provide temporary storage of at leastsome program code in order to reduce the number of times code must beretrieved from bulk storage during execution.

Input/output or I/O devices (including but not limited to keyboards,displays, pointing devices, etc.) can be coupled to the system eitherdirectly or through intervening I/O controllers.

Network adapters may also be coupled to the system to enable the dataprocessing system to become coupled to other data processing systems orremote printers or storage devices through intervening private or publicnetworks. Modems, cable modems and Ethernet cards are just a few of thecurrently available types of network adapters.

Those skilled in the art will recognize improvements and modificationsto the preferred embodiments of the present invention. All suchimprovements and modifications are considered within the scope of theconcepts disclosed herein and the claims that follow.

What is claimed is:
 1. A method, comprising: by a processor in responseto failure of an application that initiated updates to a plurality ofoperational system resources without the updates being successfullycommitted: for each physically inconsistent operational system resourcethat was left in a non-fully functional data indexing and access stateas a result of the failure of the application: performing a portion ofavailable pending updates to change the respective physicallyinconsistent operational system resource to a partially backed outoperational system resource with a fully functional data indexing andaccess state; and ignoring any remaining available pending updates forthe respective partially backed out operational system resource afterthe respective fully functional data indexing and access state isachieved to expedite system restart.
 2. The method of claim 1, furthercomprising: identifying a previous state of fully functional dataindexing and access for each of the plurality of operational systemresources based at least upon stored recovery log records associatedwith each of the plurality of operational system resources; determining,for each of the plurality of operational system resources, whether anynon-committed pending update operations by the failed application areindicated by the stored recovery log records at a time of the failure ofthe application; and identifying each physically inconsistentoperational system resource based upon a determination that at least onenon-committed pending update operation by the failed application causedthe non-fully functional data indexing and access state of therespective physically inconsistent operational system resource.
 3. Themethod of claim 1, further comprising retrieving, for each physicallyinconsistent operational system resource, the respective portion of theavailable pending updates from stored recovery log records referenced aspreviously initiated updates to the respective physically inconsistentoperational system resource by the failed application.
 4. The method ofclaim 1, where ignoring any remaining available pending updates for therespective partially backed out operational system resource after therespective fully functional data indexing and access state is achievedcomprises ignoring available pending updates referenced by storedrecovery log records associated with the respective partially backed outoperational system resource after the respective fully functional dataindexing and access state is achieved.
 5. The method of claim 1, furthercomprising marking each partially backed out operational system resourcefor verification in association with the system restart.
 6. The methodof claim 5, further comprising verifying functional data indexing andaccess state integrity of each partially backed out operational systemresource prior to restart of each partially backed out operationalsystem resource.
 7. The method of claim 1, further comprising verifyingphysical integrity of any of the plurality of operational systemresources determined to be in the fully functional data indexing andaccess state after the failure of the application prior to the systemrestart.
 8. A system, comprising: a memory; and a processor programmedto: in response to failure of an application that initiated updates to aplurality of operation system resources without the updates beingsuccessfully committed and using resource recovery information stored inthe memory: for each physically inconsistent operational system resourcethat was left in a non-fully functional data indexing and access stateas a result of the failure of the application: perform a portion ofavailable pending updates to change the respective physicallyinconsistent operational system resource to a partially backed outoperational system resource with a fully functional data indexing andaccess state; and ignore any remaining available pending updates for therespective partially backed out operational system resource after therespective fully functional data indexing and access state is achievedto expedite system restart.
 9. The system of claim 8, where theprocessor is further programmed to: identify a previous state of fullyfunctional data indexing and access for each of the plurality ofoperational system resources based at least upon stored recovery logrecords associated with each of the plurality of operational systemresources; determine, for each of the plurality of operational systemresources, whether any non-committed pending update operations by thefailed application are indicated by the stored recovery log records at atime of the failure of the application; and identify each physicallyinconsistent operational system resource based upon a determination thatat least one non-committed pending update operation by the failedapplication caused the non-fully functional data indexing and accessstate of the respective physically inconsistent operational systemresource.
 10. The system of claim 8, where the processor is furtherprogrammed to retrieve, for each physically inconsistent operationalsystem resource, the respective portion of the available pending updatesfrom stored recovery log records referenced as previously initiatedupdates to the respective physically inconsistent operational systemresource by the failed application.
 11. The system of claim 8, where, inbeing programmed to ignore any remaining available pending updates forthe respective partially backed out operational system resource afterthe respective fully functional data indexing and access state isachieved, the processor is programmed to ignore available pendingupdates referenced by stored recovery log records associated with therespective partially backed out operational system resource after therespective fully functional data indexing and access state is achieved.12. The system of claim 8, where the processor is further programmed tomark each partially backed out operational system resource forverification in association with the system restart.
 13. The system ofclaim 8, where the processor is further programmed to verify physicalintegrity of any of the plurality of operational system resourcesdetermined to be in the fully functional data indexing and access stateafter the failure of the application prior to the system restart.
 14. Acomputer program product comprising a computer useable storage mediumincluding a computer readable program code, where the computer readableprogram code when executed on a computer causes the computer to: inresponse to failure of an application that initiated updates to aplurality of operational system resources without the updates beingsuccessfully committed: for each physically inconsistent operationalsystem resource that was left in a non-fully functional data indexingand access state as a result of the failure of the application: performa portion of available pending updates to change the respectivephysically inconsistent operational system resource to a partiallybacked out operational system resource with a fully functional dataindexing and access state; and ignore any remaining available pendingupdates for the respective partially backed out operational systemresource after the respective fully functional data indexing and accessstate is achieved to expedite system restart.
 15. The computer programproduct of claim 14, where the computer readable program code whenexecuted on the computer further causes the computer to: identify aprevious state of fully functional data indexing and access for each ofthe plurality of operational system resources based at least upon storedrecovery log records associated with each of the plurality ofoperational system resources; determine, for each of the plurality ofoperational system resources, whether any non-committed pending updateoperations by the failed application are indicated by the storedrecovery log records at a time of the failure of the application; andidentify each physically inconsistent operational system resource basedupon a determination that at least one non-committed pending updateoperation by the failed application caused the non-fully functional dataindexing and access state of the respective physically inconsistentoperational system resource.
 16. The computer program product of claim14, where the computer readable program code when executed on thecomputer further causes the computer to retrieve, for each physicallyinconsistent operational system resource, the respective portion of theavailable pending updates from stored recovery log records referenced aspreviously initiated updates to the respective physically inconsistentoperational system resource by the failed application.
 17. The computerprogram product of claim 14, where, in causing the computer to ignoreany remaining available pending updates for the respective partiallybacked out operational system resource after the respective fullyfunctional data indexing and access state is achieved, the computerreadable program code when executed on the computer causes the computerto ignore available pending updates referenced by stored recovery logrecords associated with the respective partially backed out operationalsystem resource after the respective fully functional data indexing andaccess state is achieved.
 18. The computer program product of claim 14,where the computer readable program code when executed on the computerfurther causes the computer to mark each partially backed outoperational system resource for verification in association with thesystem restart.
 19. The computer program product of claim 18, where thecomputer readable program code when executed on the computer furthercauses the computer to verify functional data indexing and access stateintegrity of each partially backed out operational system resource priorto restart of each partially backed out operational system resource. 20.The computer program product of claim 14, where the computer readableprogram code when executed on the computer further causes the computerto verify physical integrity of any of the plurality of operationalsystem resources determined to be in the fully functional data indexingand access state after the failure of the application prior to thesystem restart.